package ae.pcfc.etks.online.itworx.ehs.web.delegate;

import java.util.List;

import ae.pcfc.etks.online.itworx.ehs.web.entity.DocumentType;
import ae.pcfc.etks.online.itworx.ehs.web.entity.OFCDocument;
import ae.pcfc.etks.online.itworx.ehs.web.enums.RequestStatus;
import ae.pcfc.etks.online.itworx.ehs.web.exception.DocumentTypeAlraedyExistException;
import ae.pcfc.etks.online.itworx.ehs.web.exception.DocumentTypeNotFoundException;
import ae.pcfc.etks.online.itworx.ehs.web.exception.InvalidDocumentTypeNameException;
import ae.pcfc.etks.online.itworx.ehs.web.exception.InvalidInputException;

public interface EHSDelegate extends BaseDelegate{

	List<DocumentType> getAllDocumentType();

	void createNewDocumentType(DocumentType documentType)
			throws DocumentTypeAlraedyExistException,
			InvalidDocumentTypeNameException, InvalidInputException, RuntimeException;

	void deleteDocumentType(Long id) throws DocumentTypeNotFoundException,
			InvalidInputException;

	void updateDocumentType(DocumentType documentType)
			throws DocumentTypeNotFoundException, InvalidInputException,
			InvalidDocumentTypeNameException, DocumentTypeAlraedyExistException, RuntimeException;

	//DocumentType retrieveDocumentTypeByName(String name, Long id);
	
	OFCDocument findOFCDocumentById(long id) throws InvalidInputException;

	DocumentType getDocumentTypeById(Long id) throws DocumentTypeNotFoundException, InvalidInputException;

	List<DocumentType> getAllDocumentTypeByOFCStatus(String documentName, RequestStatus requestStatus);

}
